home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / dbcommon.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  5.5 KB  |  159 lines

  1. // Borland C++ Builder
  2. // Copyright (c) 1995, 1998 by Borland International
  3. // All rights reserved
  4.  
  5. // (DO NOT EDIT: machine generated header) 'DBCommon.pas' rev: 3.00
  6.  
  7. #ifndef DBCommonHPP
  8. #define DBCommonHPP
  9. #include <Bde.hpp>
  10. #include <Db.hpp>
  11. #include <Classes.hpp>
  12. #include <Windows.hpp>
  13. #include <SysInit.hpp>
  14. #include <System.hpp>
  15.  
  16. //-- user supplied -----------------------------------------------------------
  17.  
  18. namespace Dbcommon
  19. {
  20. //-- type declarations -------------------------------------------------------
  21. enum TExprNodeKind { enField, enConst, enOperator };
  22.  
  23. struct TExprNode;
  24. typedef TExprNode *PExprNode;
  25.  
  26. struct TExprNode
  27. {
  28.     TExprNode *FNext;
  29.     TExprNodeKind FKind;
  30.     bool FPartial;
  31.     CANOp FOperator;
  32.     System::Variant FData;
  33.     TExprNode *FLeft;
  34.     TExprNode *FRight;
  35. } ;
  36.  
  37. class DELPHICLASS TFilterExpr;
  38. class PASCALIMPLEMENTATION TFilterExpr : public System::TObject 
  39. {
  40.     typedef System::TObject inherited;
  41.     
  42. private:
  43.     Db::TDataSet* FDataSet;
  44.     Db::TFilterOptions FOptions;
  45.     TExprNode *FNodes;
  46.     Bde::CANExpr *FExprBuffer;
  47.     int FExprBufSize;
  48.     int FExprNodeSize;
  49.     int FExprDataSize;
  50.     Db::TField* __fastcall FieldFromNode(PExprNode Node);
  51.     char * __fastcall GetExprData(int Pos, int Size);
  52.     int __fastcall PutCompareNode(PExprNode Node);
  53.     int __fastcall PutConstBCD(const System::Variant &Value, int Decimals);
  54.     int __fastcall PutConstBool(const System::Variant &Value);
  55.     int __fastcall PutConstDate(const System::Variant &Value);
  56.     int __fastcall PutConstDateTime(const System::Variant &Value);
  57.     int __fastcall PutConstFloat(const System::Variant &Value);
  58.     int __fastcall PutConstInt(int DataType, const System::Variant &Value);
  59.     int __fastcall PutConstNode(int DataType, char * Data, int Size);
  60.     int __fastcall PutConstStr(const System::AnsiString Value);
  61.     int __fastcall PutConstTime(const System::Variant &Value);
  62.     int __fastcall PutData(char * Data, int Size);
  63.     int __fastcall PutExprNode(PExprNode Node);
  64.     int __fastcall PutFieldNode(Db::TField* Field);
  65.     int __fastcall PutNode(Bde::NODEClass NodeType, Bde::CANOp OpType, int OpCount);
  66.     void __fastcall SetNodeOp(int Node, int Index, int Data);
  67.     
  68. public:
  69.     __fastcall TFilterExpr(Db::TDataSet* DataSet, Db::TFilterOptions Options);
  70.     __fastcall virtual ~TFilterExpr(void);
  71.     PExprNode __fastcall NewCompareNode(Db::TField* Field, Bde::CANOp Operator, const System::Variant &
  72.         Value);
  73.     PExprNode __fastcall NewNode(TExprNodeKind Kind, Bde::CANOp Operator, const System::Variant &Data, 
  74.         PExprNode Left, PExprNode Right);
  75.     Bde::pCANExpr __fastcall GetFilterData(PExprNode Root);
  76. };
  77.  
  78. enum TExprToken { etEnd, etSymbol, etName, etLiteral, etLParen, etRParen, etEQ, etNE, etGE, etLE, etGT, 
  79.     etLT };
  80.  
  81. class DELPHICLASS TExprParser;
  82. class PASCALIMPLEMENTATION TExprParser : public System::TObject 
  83. {
  84.     typedef System::TObject inherited;
  85.     
  86. private:
  87.     TFilterExpr* FFilter;
  88.     System::AnsiString FText;
  89.     char *FSourcePtr;
  90.     char *FTokenPtr;
  91.     System::AnsiString FTokenString;
  92.     System::AnsiString FStrTrue;
  93.     System::AnsiString FStrFalse;
  94.     TExprToken FToken;
  95.     Bde::CANExpr *FFilterData;
  96.     int FDataSize;
  97.     void __fastcall NextToken(void);
  98.     PExprNode __fastcall ParseExpr(void);
  99.     PExprNode __fastcall ParseExpr2(void);
  100.     PExprNode __fastcall ParseExpr3(void);
  101.     PExprNode __fastcall ParseExpr4(void);
  102.     PExprNode __fastcall ParseExpr5(void);
  103.     System::AnsiString __fastcall TokenName(void);
  104.     bool __fastcall TokenSymbolIs(const System::AnsiString S);
  105.     
  106. public:
  107.     __fastcall TExprParser(Db::TDataSet* DataSet, const System::AnsiString Text, Db::TFilterOptions Options
  108.         );
  109.     __fastcall virtual ~TExprParser(void);
  110.     __property Bde::pCANExpr FilterData = {read=FFilterData};
  111.     __property int DataSize = {read=FDataSize, nodefault};
  112. };
  113.  
  114. class DELPHICLASS TMasterDataLink;
  115. class PASCALIMPLEMENTATION TMasterDataLink : public Db::TDataLink 
  116. {
  117.     typedef Db::TDataLink inherited;
  118.     
  119. private:
  120.     Db::TDataSet* FDataSet;
  121.     System::AnsiString FFieldNames;
  122.     Classes::TList* FFields;
  123.     Classes::TNotifyEvent FOnMasterChange;
  124.     Classes::TNotifyEvent FOnMasterDisable;
  125.     void __fastcall SetFieldNames(const System::AnsiString Value);
  126.     
  127. protected:
  128.     virtual void __fastcall ActiveChanged(void);
  129.     virtual void __fastcall CheckBrowseMode(void);
  130.     virtual void __fastcall LayoutChanged(void);
  131.     virtual void __fastcall RecordChanged(Db::TField* Field);
  132.     
  133. public:
  134.     __fastcall TMasterDataLink(Db::TDataSet* DataSet);
  135.     __fastcall virtual ~TMasterDataLink(void);
  136.     __property System::AnsiString FieldNames = {read=FFieldNames, write=SetFieldNames};
  137.     __property Classes::TList* Fields = {read=FFields};
  138.     __property Classes::TNotifyEvent OnMasterChange = {read=FOnMasterChange, write=FOnMasterChange};
  139.     __property Classes::TNotifyEvent OnMasterDisable = {read=FOnMasterDisable, write=FOnMasterDisable};
  140.         
  141. };
  142.  
  143. //-- var, const, procedure ---------------------------------------------------
  144. extern PACKAGE Byte FldTypeMap[23];
  145. extern PACKAGE Word FldSubTypeMap[23];
  146. extern PACKAGE TFieldType DataTypeMap[18];
  147. extern PACKAGE TFieldType BlobTypeMap[7];
  148. extern PACKAGE System::Variant __fastcall SafeArrayToVariant(System::PVarArray SafeArray);
  149. extern PACKAGE bool __fastcall FMTBCDToCurr(const Bde::FMTBcd &BCD, System::Currency &Curr);
  150. extern PACKAGE bool __fastcall CurrToFMTBCD(System::Currency Curr, Bde::FMTBcd &BCD, int Precision, 
  151.     int Decimals);
  152.  
  153. }    /* namespace Dbcommon */
  154. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  155. using namespace Dbcommon;
  156. #endif
  157. //-- end unit ----------------------------------------------------------------
  158. #endif    // DBCommon
  159.